import { getStudyDataType } from "../../../typings/InterfaceData";
import { cancleCollect, collect } from "../../API/collect";
import { getList } from "../../API/getList";
import { search } from "../../API/search";
import { deconstructEvent } from "../../hooks/deconstructEvent";
import { deserialize } from "../../hooks/serializingString";
import Toast from "../../miniprogram_npm/@vant/weapp/toast/toast";
import http from "../../utils/http";

// pages/list/list.ts
Page({

  /**
   * 页面的初始数据
   */
  data: {
    list: [],
    meta: "",
    page: 1,
    q: "",
    show: false,
    type: "",
    typeList: ['学校', '入学要求'],
    dUrl: "",
    active: 0,
    searchList: {},
    typeMap: {}
  },
  onChange(e) {
    console.log(e.detail.index);
    const { searchList, typeList, typeMap } = this.data
    const _t = typeList[e.detail.index]
    this.setData({
      active: e.detail.index,
      list: searchList[typeMap.get(_t)]
    })
    console.log(this.data.list);
    console.log(this.data.typeList[e.detail.index]);
  },

  // /change/enroll/
  changeEnroll(e) {
    const { nid } = deconstructEvent(e)
    wx.navigateTo({
      url: "/pages/form/form?nid=" + nid
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(option) {
    const _type = new Map()
    _type.set('学校', 'about')
    _type.set('入学要求', 'ask')
    console.log(option, "}}}}}}}}}}}}");
    const { meta, q, type } = option
    const _map = new Map()
    _map.set("blurb", "招生简章")
    _map.set("billboard", "PPT")
    _map.set("enroll", "报名表")
    _map.set("vodeo", "视频")

    wx.setNavigationBarTitle({
      title: _map.get(type)
    })
    this.setData({
      meta,
      q,
      type,
      typeMap: _type
    })
    console.log(this.data.type, "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY");



    // if (option.data !== 'undefined') {
    //   console.log(deserialize(option.data));
    //   let _listData = deserialize(option.data)
    //   _listData = JSON.parse(_listData)
    //   this.setData({
    //     list: _listData,
    //   })
    //   if (this.data.list[0]) {
    //     this.setData({
    //       show: true
    //     })
    //   }
    // }
    if (meta === "search") {
      const searchList = {},
        aList = [],
        askList = [];
      for (const i of this.data.list) {
        if (i.type === "about") {
          aList.push(i)
        } else if (i.type === "ask") {
          askList.push(i)
        }
      }
      searchList["about"] = aList
      searchList["ask"] = askList
      this.setData({
        searchList,
        list: searchList["about"]
      })
      console.log(this.data.list);
      
    }
    this.getList(type)
  },
  async getList(type){
    console.log(type);
    
    const {page} = this.data
    const res = await getList(type, 10, page,'')    
    this.setData({
      list:res[`${type}_data`],
      show:true
    })
    console.log(this.data.list,"FFFFFFFFFFFFFFFFFFFFFFFF");
  },


  // get/download/url/
  // downloadUrl(e) {
  //   const {nid} = deconstructEvent(e)
  //   const { type } = this.data
  //   const _this = this
  //   wx.request({
  //     url:"https://liuxue.tointe.com/api/get/download/url/",
  //     method:"GET",
  //     data:{
  //       type,
  //       nid
  //     },
  //     header: {
  //       cookie: "sessionid=" + wx.getStorageSync('sessionid')
  //     },
  //     success(res){
  //       console.log(res);
  //       _this.setData({
  //         dUrl:res.data.url
  //       })
  //       _this.downloadFile()
  //     }
  //   })
  // },
  download(e) {
    const { item, t } = deconstructEvent(e)
    const { type } = this.data
    const nid = item[`${type}_id`]
    console.log(nid);
    
    const _this = this
    wx.request({
      url: "https://liuxue.tointe.com/api/get/download/url/",
      method: "GET",
      data: {
        type,
        nid
      },
      header: {
        cookie: "sessionid=" + wx.getStorageSync('sessionid')
      },
      success(res) {
        console.log(res);
        _this.setData({
          dUrl: res.data.url
        })
        if (t == 'down') {
          _this.downloadFile({ pathUrl: res.data.url })
        } else if (t === 'preview') {
          _this.openFile({ pathUrl: res.data.url })
        }

      }
    })
  },
  // /download/

  downloadFile(item) {
    let file = decodeURIComponent(item.pathUrl); // 解码(注意:涉及到文件名中有中文需要转码)
    file = this.getFilePathName(file); // 将文件路径过滤，格式为【文件名+.后缀名】
    // 加载状态
    console.log(file)
    wx.showLoading({
      title: '文件下载中',
      mask: true
    });
    let _this = this;
    // 预览网络文档
    console.log(item.pathUrl)
    wx.downloadFile({
      url: item.pathUrl, // 文件的本身url
      filePath: wx.env.USER_DATA_PATH + '/down', // 本地自定义的文件名
      success: function (res) {
        console.log(res)
        let filePath = res.filePath; // 微信临时文件路径(这里要使用自定义的名字文件名,否则打开的文件名是乱码)
        const fs = wx.getFileSystemManager()

        var isExist = false; //目录是否存在
        var that = this;
        // 同步接口
        try {
          fs.accessSync(`${wx.env.USER_DATA_PATH}/download`)
          isExist = true;
        } catch (e) {
          // console.error(e)
        }
        if (isExist != true) {
          // 同步接口,创建目录
          try {
            fs.mkdirSync(`${wx.env.USER_DATA_PATH}/download`, true)
          } catch (e) {
            console.error(e)
          }
        }




        fs.saveFile({
          tempFilePath: filePath,
          filePath: `${wx.env.USER_DATA_PATH}/download/${new Date().getTime() + '.pdf'}`, //保存的时候必须跟上路径和文件名
          success: function (res) {
            wx.showToast({ title: '保存成功', icon: 'none' })
          },
          fail: function (res) {
            console.log(res)
            wx.showToast({ title: '文件保存失败，请稍后重试', icon: 'none' })
          }
        })

        wx.hideLoading();
      },
      fail: function (e) {
        console.log(e)
        wx.showToast({ title: '打开文件失败，请稍后重试', icon: 'none' })
        wx.hideLoading();

      }
    });
  },
  openFile(item) { // item为当前点击的事物对象

    console.log(11111111111111)
    let file = decodeURIComponent(item.pathUrl); // 解码(注意:涉及到文件名中有中文需要转码)
    file = this.getFilePathName(file); // 将文件路径过滤，格式为【文件名+.后缀名】
    // 加载状态
    console.log(file)
    wx.showLoading({
      title: '文件打开中',
      mask: true
    });
    let _this = this;
    // 预览网络文档
    console.log(item.pathUrl)
    wx.downloadFile({
      url: item.pathUrl, // 文件的本身url
      filePath: wx.env.USER_DATA_PATH + '/res', // 本地自定义的文件名
      success: function (res) {
        console.log(res)
        let filePath = res.filePath; // 微信临时文件路径(这里要使用自定义的名字文件名,否则打开的文件名是乱码)
        wx.openDocument({
          filePath: filePath,
          fileType: 'pdf',
          showMenu: true,  // 是否显示右上角菜单按钮 默认为false(看自身需求，可要可不要。后期涉及到右上角分享功能)
          success: function () {
            wx.showToast(
              { title: '打开文件成功' }
            )

          },
          fail: function (e) {
            console.log(e)
            wx.showToast({ title: '打开文件失败，请稍后重试', icon: 'none' })

          }
        });
        wx.hideLoading();
      },
      fail: function (e) {
        console.log(e)
        wx.showToast({ title: '打开文件失败，请稍后重试', icon: 'none' })
        wx.hideLoading();
      }
    });
  },
  // 文件路径过滤【文件名+.后缀名】
  // 例如：哈哈.pdf
  getFilePathName(path) {
    let pos1 = path.lastIndexOf('/');
    let pos2 = path.lastIndexOf('\\');
    let position = Math.max(pos1, pos2);
    if (position < 0)
      return path;
    else
      return path.substring(position + 1);
  },

  // 预览报名表
  previewEnroll(e) {
    const { enroll } = deconstructEvent(e);
    const { enroll_id } = enroll
    wx.showLoading({
      title: '加载中',
    })
    wx.request({
      url: "https://liuxue.tointe.com/api/enroll/",
      method: "GET",
      data: {
        nid: enroll_id
      },
      header: {
        cookie: "sessionid=" + wx.getStorageSync('sessionid')
      },
      responseType: 'arraybuffer', //此处是请求文件流，必须带入的属性
      success: res => {
        if (res.statusCode === 200) {
          const fs = wx.getFileSystemManager(); //获取全局唯一的文件管理器
          fs.writeFile({
            filePath: wx.env.USER_DATA_PATH + "/a.doc", // wx.env.USER_DATA_PATH 指定临时文件存入的路径，后面字符串自定义
            data: res.data,
            encoding: "binary", //二进制流文件必须是 binary
            success(res) {
              wx.openDocument({ // 打开文档
                filePath: wx.env.USER_DATA_PATH + "/a.doc",  //拿上面存入的文件路径
                showMenu: true, // 显示右上角菜单
                success: function (res) {
                  setTimeout(() => { wx.hideLoading() }, 500)
                }
              })
            }
          })
        }
      }
    })

  },


  // /preview/ 预览
  previewFile(e) {
    console.log(e);
    const { item } = deconstructEvent(e)
    const { type } = this.data
    const nid = item[`${type}_id`]
    wx.request({
      url: "https://liuxue.tointe.com/preview/",
      method: "GET",
      data: {
        nid,
        type
      },
      header: {
        cookie: "sessionid=" + wx.getStorageSync('sessionid')
      },
      success(res) {
        console.log(res);
        if (res.statusCode === 200) {
          wx.navigateTo({
            url: "/pages/article2/article2?details=" + res.data
          })
        }
      }
    })

  },

  signUp() {
    wx.navigateTo({
      url: "/pages/form/form"
    })
  },

  // 收藏 && 取消收藏
  collect(e) {
    const { item } = deconstructEvent(e);
    console.log(item);

    const { is_collect } = item;
    console.log(typeof is_collect);

    const { type } = this.data
    const nid = item[`${type}_id`]
    if (is_collect) {
      console.log("cancleCollect", "SSSSSSSSSSSSSSSSSSSSSSs");
      cancleCollect(
        type,
        nid
      ).then((res) => {
        console.log(res);
        Toast.success('取消收藏成功');
        this.getList(type)
        // wx.redirectTo({
          //   url:"/pages/list/list"
          // })
        })
      } else {
        console.log("Collect", "DDDDDDDDDDDDDDDDDDDD");
        collect(type, nid).then((res) => {
          console.log(res);
          Toast.success('收藏成功');
          this.getList(type)
      })
    }
  },

  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    const { q } = this.data
    if (this.data.meta === "search") {
      search(10, 1, q).then((res) => {
        console.log(res);
        const { search_data } = res
        this.setData({
          list: search_data
        })
      })
    }

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

    const { page, q } = this.data
    this.setData({
      page: page + 1
    })
    if (this.data.meta === "search") {
      search(10, page, q).then((res) => {
        const { search_data } = res
        this.data.list.push(...search_data)
      })
    }


  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})